# -*-coding utf-8 -*-

__project__ = 'le-bo16'
__file_name__ = 'homework9'
__author__ = 'hqDu'
__time__ = '2020-11-18 23:32'
__product_name = 'PyCharm'
# @fileName :homework9.py


import os

# 综合应用:学生管理系统
# 定一个列表，用来存储所有的学生信息(每个学生是一个字典)
stus_info_list = []


# 有如下7个方法
def print_menu():
    print("      学生管理系统 V1.0")
    print(" 1:添加学生")
    print(" 2:删除学生")
    print(" 3:修改学生")
    print(" 4:查询学生")
    print(" 5:显示所有学生")
    print(" 6:保存数据")
    print(" 7:退出系统")
    print("---------------------------")


# 添加新学生信息
def add_stu_info():

    global stus_info_list

    new_name = input("请输入姓名:")  # 输入新学生的姓名
    new_tel = input("请输入手机号:")  # 新用户的手机
    new_qq = input("请输入QQ:")  # 新学生的QQ

    # 检查用户名是否重复注册，重复则退出函数
    for stu_info in stus_info_list:
        if stu_info['name'] == new_name:
            print("此用户名已经被占用,请重新输入")
            return  # 用户名重复，结束函数

    # 创建一个空字典，存放新学生的用户名、手机和QQ信息
    stu_info_dict = {}

    stu_info_dict['name'] = new_name  # 将新的用户名添加到字典
    stu_info_dict['tel'] = new_tel  # 将新用户的手机添加到字典
    stu_info_dict['qq'] = new_qq  # 将新用户的QQ添加到字典

    # 将新学生的信息字典存入学生信息列表内
    stus_info_list.append(stu_info_dict)

    # 查看是否正确存储到字典和列表
    # print(stu_info_dict)
    # print(stus_info_list)
    # debug



# 删除学生信息
def del_stu_info():
    """
    删除学生信息
    :return: 
    """
    global stus_info_list

    # 存储要被删除的学生序号
    stu_num = int(input("请输入要删除的序号:"))

    # 检查序号是否在合理为范围内
    if 0 <= stu_num < len(stus_info_list):
        del_flag = input("你确定要删除么?yes or no")
        if del_flag == "yes":
            del stus_info_list[stu_num]  # 从学生列表删除该学生的信息
    else:
        print("输入序号有误,请重新输入")


def modify_stu_info():
    """
    修改学生信息
    :return: 
    """
    global stus_info_list

    # 存储要被删除的学生序号
    stu_num = int(input("请输入要修改的序号:"))

    if 0 <= stu_num < len(stus_info_list):
        print("你要修改的信息是:")
        print("学生姓名：%s 手机号：%s QQ号：%s" % (stus_info_list[stu_num]['name'],
                                         stus_info_list[stu_num]['tel'],stus_info_list[stu_num]['qq']))
        stus_info_list[stu_num]['name'] = input("请输入新的姓名:")
        stus_info_list[stu_num]['tel'] = input("请输入新的手机号:")
        stus_info_list[stu_num]['qq'] = input("请输入新QQ:")
    else:
        print("输入序号有误,请重新输入")

    # stu_info_dict = {}  # 创建一个空字典，存放新学生的用户名、手机和QQ信息
    # new_name = input("请输入新的姓名:")
    # new_tel = input("请输入新的手机号:")
    # new_qq = input("请输入新QQ:")
    # stu_info_dict['name'] = new_name  # 将新的用户名添加到字典
    # stu_info_dict['tel'] = new_tel  # 将新用户的手机添加到字典
    # stu_info_dict['qq'] = new_qq  # 将新用户的QQ添加到字典
    # stus_info_list[stu_num] = stu_info_dict

# 查询学生
def search_stu_info():
    """
    查询学生姓名是否存在
    """
    stu_name = input("请输入要查询的学生姓名:")
    for stu in stus_info_list:
        if stu['name'] == stu_name:
            print("查询到的信息如下:")
            print("学生姓名：%s 手机号：%s QQ号：%s" % (stu['name'],stu['tel'],stu['qq']))
            break
    print("没有您要找的信息....")



# 遍历学生信息
def print_all_info():
    i = 0
    for stu in stus_info_list:
        print("序号：%s 学生姓名：%s 手机号：%s QQ号：%s" % (i,stu['name'], stu['tel'], stu['qq']))
        i += 1

# 保存数据
def save_stu_info():
    stu_info_file = open('studentsInformation.txt','w',encoding='utf-8')
    for info in stus_info_list:
        stu_info_file.write(str(info))
    stu_info_file.close()


def main():
    """用来控制整个流程"""
    while True:
        # 1. 打印功能
        print_menu()

        # 2. 获取用户的选择
        num = input("请输入要进行的操作(数字)")

        # 3. 根据用户选择,做相应的事情
        if num == '1':
            # 添加学生信息
            add_stu_info()
        elif num == '2':
            # 删除学生信息
            del_stu_info()
        elif num == '3':
            # 修改学生信息
            modify_stu_info()
        elif num == '4':
            # 查询学生信息
            search_stu_info()
        elif num == '5':
            # 遍历学生信息
            print_all_info()
        elif num == '6':
            # 保存数据
            save_stu_info()
        elif num == '7':
            # 退出系统
            exit_flag = input("确定要退出系统吗？yes or no?")
            if exit_flag == 'yes':
                break
        else:
            print("输入有误,请重新输入......")

        input("\n\n\n按回车继续......")
        os.system('clear')  # 调用linux命令clear清屏


if __name__ == '__main__':
    main()